package tp.tecnicasdisenio.dao;

import java.util.ArrayList;

import tp.tecnicasdisenio.model.entity.Cuatrimestre;
import tp.tecnicasdisenio.model.entity.Materia;

public interface MateriaDaoInterface extends DaoInterface<Materia, String> {

	/**
	 * Indica si existe una materia con nombre y codigo especificado en el
	 * argumento.
	 * 
	 * @param materia
	 * @return
	 */
	public boolean existe(Materia materia);

	public Materia getPorEmail(String email);

	/**
	 * Devuelve una lista con los mails de los ayudantes de la materia
	 * @param codigoMateria
	 * @return una lista con los mails, si no hay docentes, la lista estara vacia
	 */
	public ArrayList<String> getEmailsDocentes(String codigoMateria);
	
	/**
	 * Devuelve una lista con los mails de los alumnos inscriptos en el cuatrimestre indicado
	 * @param codigoMateria
	 * @param cuatrimestre
	 * @return una lista con los mails de los alumnos, si no hay, la lista estara vacia
	 */
	public ArrayList<String> getEmailsAlumnos(String codigoMateria, Cuatrimestre cuatrimestre);
	
	/**
	 * Inscribe un email, asociado a un docente de la materia
	 * @param email
	 * @param nombre
	 */
	public void inscribirDocente(String codigoMateria, String email, String nombre);

	/**
	 * Obtiene  el ultimo nro de grupo registrado en la materia para el cuatrimestre dado
	 * 
	 * @param materia
	 * @param cuatrimestreActual
	 * @return
	 */
	public int getUltimoNroGrupoRegistrado(Materia materia, Cuatrimestre cuatrimestre);
	
	/**
	 * Obtiene una lista con las materias que pasen el filtro
	 * @param codigoMateria
	 * @param nombre
	 * @param email
	 * @return una lista con las materias, lista vacia en caso contrario
	 */
	public ArrayList<Materia> filtrarMaterias(String codigoMateria, String nombre, String email);
}
